package com.atguigu.tingshu.album.service;

import com.atguigu.tingshu.model.album.AlbumAttributeValue;
import com.atguigu.tingshu.model.album.AlbumInfo;
import com.atguigu.tingshu.query.album.AlbumInfoQuery;
import com.atguigu.tingshu.vo.album.AlbumInfoVo;
import com.atguigu.tingshu.vo.album.AlbumListStartVo;
import com.atguigu.tingshu.vo.album.AlbumListVo;
import com.atguigu.tingshu.vo.album.AlbumStatVo;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

public interface AlbumInfoService extends IService<AlbumInfo> {

  /**
     * 保存专辑信息
     * @param albumInfoVo
     * @param userId
     */
    void saveAlbumInfo(AlbumInfoVo albumInfoVo, Long userId);

  /**
   * 获取当前用户专辑分页列表
   * @param albumListVoPage
   * @param albumInfoQuery
   * @return
   */
  IPage<AlbumListVo> findUserAlbumPage(IPage<AlbumListVo> albumListVoPage, AlbumInfoQuery albumInfoQuery);

  /**
   * 删除专辑
   * @param id
   */
    void removeAlbumInfo(Long id);

  /**
   * 根据专辑Id获取专辑信息
   * @param albumnId
   * @return
   */
  AlbumInfo getAlbumInfoById(Long albumnId);

  /**
   * 修改专辑
   * @param id
   * @param albumInfoVo
   */
  void updateAlbumInfo(Long id, AlbumInfoVo albumInfoVo);

  /**
   * 获取全部专辑列表
   * @param userId
   * @return
   */
    List<AlbumInfo> findUserAllAlbumList(long userId);

  /**
   * 根据专辑Id获取专辑属性值集合
   * @param albumId
   * @return
   */
  List<AlbumAttributeValue> findAlbumAttributeValue(Long albumId);

  /**
   * 根据专辑Id获取专辑相关属性
   * @param albumId
   * @return
   */
    AlbumListStartVo findAlbumStartValue(Long albumId);

  /**
   * 获取专辑统计信息
   * @param albumId
   * @return
   */
    AlbumStatVo getAlbumStartInfo(Long albumId);
}
